#pragma once

#include <vector>
#include "./BaseCommand.hpp"

namespace qbe::undoRedoT {

class MacroCommand : public BaseCommand {
 public:
  MacroCommand();
  ~MacroCommand();

  virtual bool Execute();
  virtual bool Unexecute();

  void AddCommand(BaseCommand* pCommand);
  void DeleteCommand(BaseCommand* pCommand);

  virtual bool checkTag(std::string info) override;

 private:
  MacroCommand(const MacroCommand& rhs);
  MacroCommand& operator=(const MacroCommand& rhs);

 private:
  std::vector<BaseCommand*> m_vecCommands;
  std::vector<std::string> m_infos;
};

}  // namespace qbe::undoRedoT